CREATE SCHEMA CodingSpree


	 CREATE TABLE TL_ROLES (																	--2
		id_roles int Primary Key,
		desc_rol varchar(20)
	)

	Create Table TL_USUARIOS (																	--1
		id_general int Primary Key,
		Pswd varchar(30) NULL,--ver cantidad minima--
		Intentos char(1) NULL,
		Rol int REFERENCES TL_ROLES ,
		nombre_usuario varchar (30) NULL,
		Estado char(1) NULL, 
	)
	 

	CREATE TABLE TL_FUNCIONALIDADESxROL (														--3
		id_funcionalidad int UNIQUE,
		id_rol int UNIQUE,
		PRIMARY KEY (id_funcionalidad, id_rol)
	)

	CREATE TABLE TL_FUNCIONALIDADES (															--4
		id_funcionalidad int PRIMARY KEY,
		desc_funcionalidad char(15)
	)

	CREATE TABLE TL_CLIENTES(																	--5
		id_cliente int PRIMARY KEY,
		id_general int REFERENCES TL_USUARIOS, --referencia id_general
		nombre char(14) NOT NULL,
		apellido char(20) NOT NULL,
		dni numeric(8) NOT NULL,
		mail varchar(40) NULL,
		telefono varchar(15) UNIQUE,
		fecha_nacimiento DATE NULL,
		tipo_cliente CHAR(1) NOT NULL,
		calle varchar(20) NULL,
		piso tinyint NULL,
		departamento char NULL,
		cod_postal NUMERIC NULL,
		ciudad varchar (20) NULL
	)

	CREATE TABLE TL_CARGAS (																	--6
		id_cliente int REFERENCES TL_CLIENTES,
		credito int NOT NULL,
		fecha_carga DATE NOT NULL,
		tipo_pago_desc varchar(25)
	)

	CREATE TABLE TL_GIFTCARDS (																	--7
		id_gift int PRIMARY KEY,
		id_cliente_origen int REFERENCES TL_CLIENTES,
		id_cliente_destino int REFERENCES TL_CLIENTES,
		fecha_gc DATE NOT NULL,
		monto float NOT NULL
	)

	CREATE TABLE TL_CIUDADES (																	--8
		id_ciudad int PRIMARY KEY,
		ciudad varchar(25)
	)	

	CREATE TABLE TL_CIUDADESxCLIENTE (															--9
		id_cliente int REFERENCES TL_CLIENTES,
		id_ciudad int REFERENCES TL_CIUDADES
	)
		
	CREATE TABLE TL_PROVEEDORES (
		id_proveedores int PRIMARY KEY,
		id_general int REFERENCES TL_USUARIOS,
		razon_social varchar(20) NOT NULL UNIQUE,
		dominio varchar(20) NOT NULL,
		ciudad varchar(20) NOT NULL,
		telefono varchar(15) NOT NULL, -- NO ME GUSTA EL TIPO DE DATOS
		CUIT varchar(15) NOT NULL, -- TAMPOCO ME GUSTA
		rubro varchar(20) NOT NULL
	)	
		
	CREATE TABLE TL_GROUPON (																	--10
		id_cupon int PRIMARY KEY, -- codigo?
		precio float NOT NULL,
		fecha_vigencia DATE NOT NULL,
		fecha_vencimiento DATE NOT NULL,
		cantidad int NOT NULL,
		descripcion varchar(30) NULL,
		max_compras int NOT NULL,
		id_proveedor int REFERENCES TL_PROVEEDORES,
		fecha_venc_consumo DATE NOT NULL
	)


	CREATE TABLE TL_CUPONxUSUARIO (																--11
		id_cliente int	UNIQUE,
		id_cupon int UNIQUE,
		fecha_compra DATE UNIQUE,
		cantidad_comprada int NOT NULL,
		estado char NOT NULL,
		fecha_entrega DATE NOT NULL,
		PRIMARY KEY (id_cliente, id_cupon, fecha_compra) 
	)

	CREATE TABLE TL_DEVOLUCIONES (																--12
		id_devolucion int PRIMARY KEY,
		motivo varchar(30) NOT NULL,
		fecha_compra DATE UNIQUE,
		id_cliente int UNIQUE,
		id_cupon int UNIQUE,
		FOREIGN KEY(id_cliente,id_cupon,fecha_compra) REFERENCES TL_CUPONxUSUARIO
	)
		


--DROP SCHEMA CodingSpree

---------------------------------------------------------------------------------------------------------
-- VISTAS
---------------------------------------------------------------------------------------------------------




--CREATE VIEW USUARIOS_PARA_MIGRAR AS

--BEGIN

--SELECT distinct Cli_Nombre, Cli_Apellido, Cli_Dni, Cli_Mail, Cli_Telefono, Cli_Fecha_Nac, '1' as Tipo_Cliente , Cli_Direccion, NULL as Piso, NULL as Departamento, NULL as cod_postal, Cli_Ciudad FROM  gd_esquema.Maestra

--END



---------------------------------------------------------------------------------------------------------
-- MIGRAR USUARIOS
---------------------------------------------------------------------------------------------------------



DECLARE userCursor CURSOR FOR
--SELECT Cli_Nombre, Cli_Apellido, Cli_Dni, Cli_Mail, Cli_Telefono, Cli_Fecha_Nac, Tipo_Cliente , Cli_Direccion, Piso, Departamento, cod_postal, Cli_Ciudad FROM USUARIOS_PARA_MIGRAR
SELECT distinct Cli_Nombre, Cli_Apellido, Cli_Dni, Cli_Mail, Cli_Telefono, Cli_Fecha_Nac, '1' as Tipo_Cliente , Cli_Direccion, NULL as Piso, NULL as Departamento, NULL as cod_postal, Cli_Ciudad FROM  gd_esquema.Maestra



DECLARE	@nombre varchar(14),
		@apellido varchar(20),
		@dni numeric(8),
		@mail varchar(40),
		@telefono varchar(15),
		@fecha_nacimiento DATE,
		@tipo_cliente CHAR(1),
		@calle varchar(20),
		@piso tinyint,
		@departamento char,
		@cod_postal NUMERIC,
		@ciudad varchar (20),
		@id_cliente int,
		@id_general int,
		
		
		------------
		-- CARGAS
		------------
		
		@credito int
		
		
		
		
		
		
SET @id_cliente = 1
SET @id_general = 1



OPEN userCursor


FETCH userCursor INTO   @nombre,
						@apellido,
						@dni,
						@mail,
						@telefono,
						@fecha_nacimiento,
						@tipo_cliente,
						@calle,
						@piso,
						@departamento,
						@cod_postal,
						@ciudad 


	INSERT INTO CodingSpree.TL_ROLES 
	Values	(
																	--2
		1,
		'Cliente'
	
		)
 
	
	INSERT INTO CodingSpree.TL_ROLES 
	Values	(
																	--2
		2,
		'Proveedor'
	
		)
		
	INSERT INTO CodingSpree.TL_ROLES 
	Values	(
																	--2
		3,
		'Administrador'
	
		)
	
	

WHILE (@@FETCH_STATUS = 0)

BEGIN	

		
		
	INSERT INTO CodingSpree.TL_USUARIOS																	--1
	VALUES (
	
			@id_general, 
			@apellido + '.' + @nombre,
			0,
			'1',
			@apellido + '.' + @nombre,
			1

			)
	 


							
	INSERT INTO CodingSpree.TL_CLIENTES
	VALUES (@id_cliente, 
		@id_general, 
		@nombre, 
		@apellido, 
		@dni, 
		@mail, 
		@telefono,	
		@fecha_nacimiento, 
		@tipo_cliente, 
		@calle, 
		@piso, 
		@departamento,	
		@cod_postal, 
		@ciudad
		)
		
	
		
	INSERT INTO CodingSpree.TL_CARGAS
	
	SELECT @id_cliente, Carga_Credito, Carga_Fecha, Tipo_Pago_Desc
	FROM gd_esquema.Maestra esMaster
	WHERE esMaster.Cli_Apellido = @apellido and esMaster.Cli_Nombre = @nombre and esMaster.Cli_Dni = @dni and esMaster.Carga_Credito IS NOT NULL
	
	
	
	
	
	
	SET @id_cliente = @id_cliente + 1
	SET @id_general = @id_general + 1


	FETCH userCursor INTO   @nombre,
							@apellido,
							@dni,
							@mail,
							@telefono,
							@fecha_nacimiento,
							@tipo_cliente,
							@calle,
							@piso,
							@departamento,
							@cod_postal,
							@ciudad 
							

END 

 


CLOSE userCursor


DEALLOCATE userCursor





DELETE FROM CodingSpree.TL_ROLES
DELETE FROM CodingSpree.TL_USUARIOS
DELETE FROM CodingSpree.TL_CLIENTES
DELETE FROM CodingSpree.TL_CARGAS